const http = require("http");
const url = require("url");
const fs = require("fs");
const EventEmiter = require("events");
let MIME = require("./mime.json");
const path = require("path");
let routeEvent = new EventEmiter();
// 引入route信息
require("./routes.js")(routeEvent);

let server = http.createServer((req, res) => {
  let pathname = url.parse(req.url, true).pathname;
  // 设置返还头部，不能只设置一种头部，根据返还的文件设置对应头部信息
  if (routeEvent.listenerCount(pathname) > 0) {
    routeEvent.emit(pathname, req, res);
  }

  else {
    if (fs.existsSync("./static/" + pathname)) {
      // 在static 目录里查找 pathname的文件有没有，如果有，那么就加载且输出
      // 获取文件的后缀名
      let extname = path.extname(pathname); // 获取path文件的后缀名称
      console.log(extname);
      res.setHeader("content-type", MIME[extname]);
      let data = fs.readFileSync("./static/" + pathname);
      res.write(data);
      res.end()
    } else {
      // 404 页面
      let data = fs.readFileSync("./views/404.html");
      res.write(data);
      res.end();
    }
  }
})
server.listen(8080);
/* 
静态文件的处理：引入其他的文件
    1.需要通过fs读取文件，且输出到页面
    2.根据不同的文件设置不同的返还头部 content-type，MIME标准；
*/